﻿//
//
/////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

/////////////////////////////////////////////////////////////////////////////
namespace FreeSpace.Core
{
    /////////////////////////////////////////////////////////////////////////
    public class FpsCounter
    {
        private double _lastTimeUpdate = 0;
        private short _upsCounter = 0;
        private short _ups = 0;
        private double _lastTimeDraw = 0;
        private short _dpsCounter = 0;
        private short _dps = 0;

        /////////////////////////////////////////////////////////////////////
        public int Ups
        {
            get { return _ups * 10; }
        }

        /////////////////////////////////////////////////////////////////////
        public short Dps
        {
            get { return _dps; }
        }

        /////////////////////////////////////////////////////////////////////
        public void Update(GameTime gameTime)
        {
            if ((long)gameTime.TotalGameTime.TotalMilliseconds - _lastTimeUpdate >= 100)
            {
                _ups = _upsCounter;
                _upsCounter = 0;
                _lastTimeUpdate = gameTime.TotalGameTime.TotalMilliseconds;
            }
            else
            {
                _upsCounter++;
            }
        }

        /////////////////////////////////////////////////////////////////////
        public void Draw(GameTime gameTime)
        {
            if ((long)gameTime.TotalGameTime.TotalMilliseconds - _lastTimeDraw >= 100)
            {
                _dps = _dpsCounter;
                _dpsCounter = 0;
                _lastTimeDraw = gameTime.TotalGameTime.TotalMilliseconds;
            }
            else
            {
                _dpsCounter++;
            }
        }
    }
/////////////////////////////////////////////////////////////////////////////
}
